The following specification relates to a description language and parser for a description language.
There are several scenarios of building a software product where generating different versions of the software product based on some of the same components can be very efficient. For example, a global release of a software product can require that many different versions of the software product be generated, where each version incorporates, for example, different language components to account for language differences and the same non-language components.
To generate different versions of a software product such that some of the components are reused, a bill of materials for each version of the software product can be generated, and a selected bill of materials can be used at installation time to install a version of the software product. For example, one software product can have a bill of materials for an English version of the software product and a bill of materials for a French version of the software product. A compact disc that is distributed with all of the language components and non-language components can also include the two bills of materials. At installation-time, when a user decides to install an English version of the software product, a computer can read the English bill of materials to determine which software components to install, where those software components should be installed, and how they should be installed.
The process of generating bills of materials for software products can be a tedious and time-consuming process. For example, the process can involve generating manually a version of the bill of materials for each version of the software product. Such a process can include changing the software components to be used and changing the attributes of the software components that are reused in the bill of materials.